package br.urca.model;

import java.io.Serializable;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 *
 * @author Lucas
 */
@Entity
@Table(name = "BI_AUTORES_MATERIAIS")
public class BiAutoresMateriais implements Serializable {
    
	private static final long serialVersionUID = 1L;
    
    @EmbeddedId
    protected BiAutoresMateriaisPK biAutoresMateriaisPK;
    
    /*@JoinColumns({
        @JoinColumn(name = "COD_TIPO_MATERIAL", referencedColumnName = "COD_TIPO_MATERIAL", insertable = false, updatable = false),
        @JoinColumn(name = "COD_NUMERO_MATERIAL", referencedColumnName = "COD_NUMERO_MATERIAL", insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    private BiMateriais material;*/
    
    @JoinColumn(name = "COD_AUTOR", referencedColumnName = "COD_AUTOR")
    @ManyToOne(optional = false)
    private BiAutores autor;

    public BiAutoresMateriais() {
    }

    public BiAutoresMateriais(BiAutoresMateriaisPK biAutoresMateriaisPK) {
        this.biAutoresMateriaisPK = biAutoresMateriaisPK;
    }

    public BiAutoresMateriais(Character codTipoMaterial, int codNumeroMaterial, short codItem) {
        this.biAutoresMateriaisPK = new BiAutoresMateriaisPK(codTipoMaterial, codNumeroMaterial, codItem);
    }

    public BiAutoresMateriaisPK getBiAutoresMateriaisPK() {
        return biAutoresMateriaisPK;
    }

    public void setBiAutoresMateriaisPK(BiAutoresMateriaisPK biAutoresMateriaisPK) {
        this.biAutoresMateriaisPK = biAutoresMateriaisPK;
    }

    /*public BiMateriais getMaterial() {
		return material;
	}

	public void setMaterial(BiMateriais material) {
		this.material = material;
	}*/

	public BiAutores getAutor() {
		return autor;
	}

	public void setAutor(BiAutores autor) {
		this.autor = autor;
	}

    @Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime
				* result
				+ ((biAutoresMateriaisPK == null) ? 0 : biAutoresMateriaisPK
						.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		BiAutoresMateriais other = (BiAutoresMateriais) obj;
		if (biAutoresMateriaisPK == null) {
			if (other.biAutoresMateriaisPK != null)
				return false;
		} else if (!biAutoresMateriaisPK.equals(other.biAutoresMateriaisPK))
			return false;
		return true;
	}

	@Override
    public String toString() {
        return "model.BiAutoresMateriais[ biAutoresMateriaisPK=" + biAutoresMateriaisPK + " ]";
    }
    
}
